Dieses Tool visualisiert vereinfacht wie aus einem überschaubarem Feature, welches unter fiktiven optimalen Randbedingungen z.B. in einem Manntag gelöst werden kann, in der Praxis schnell ein Problem in der Größenordnung von Mannmonaten werden kann. Das Tool ermöglicht zu sehen welchen Einfluß die verschiedenen Randbedingungen auf die Entwicklungszeit eines Features haben.
Überblick über die Eingabeparameter:
-
Anzahl der Git Repositorien: Ein Modul entspricht hier einem Git Repository. In der fiktiven idealen Welt besteht eine Applikation nur aus einem Modul. In der Praxis erfordert jedoch sowohl die Größe von Applikationen als auch die Wiederverwendbarkeit ein Aufsplitten in kleinere Module. Dieser Ansatz führt zu einer besseren Wartbarkeit, sorg jedoch bei der Implementierung eines Features für einen Overhead. Das Aufsplitten einer Applikation in mehrere Module muss daher unter einer Kosten Nutzen Betrachtung erfolgen.
-
Anzahl der Entwickler: In der fiktiven idealen Welt wird eine Applikation von einem Entwickler implementiert. Es gibt daher auch keinen Review. In der Praxis erfordert jedoch die Größe von Applikationen, Review Anforderungen und unterschiedliche Verantwortlichkeiten der Entwickler, dass mehrere Entwickler an einer Applikation und einem Feature arbeiten. Review Prozesse und die Anzahl der Entwickler haben signifikanten Einfluß auf die Entwicklungszeit.
-
Pull Request Bearbeitungszeit: Die Entwicklung eines Features erfolgt meist in einem Entwicklungszweig des Programmcodes. Sobald eine Entwickler einen stabilen Stand eines Moduls fertig gestellt hat, erstellt er einen Pull Request, um seine Arbeit mittels eines Review Prozesses in den Hauptentwicklungszweig des Programmcodes zu überführen. Während des Review Prozesses haben andere Entwickler die Möglichkeit sofortige Korrekturen anzuregen. Die Bearbeitungszeit eines Pull Request hat einen signifikanten Einfluß auf die Entwicklungszeit. In der Praxis ist es daher wichtig Prozesse zu definieren, die eine schnelle Bearbeitung absichern.
-
Tool Qualität: Die Entwicklung einer Software basiert in der Regel auf einer Vielzahl von Tools (z.B. IDE, Testtool usw.). Die Verfügbarkeit und die Qualität solcher Tools hat einen signifikanten Einfluß auf die Entwicklungszeit.
-
Spezifikationsqualität: Wie genau ein Feature in einer Applikation auszusehen und zu funktionieren hat, wird durch eine Spezifikation vorgegeben. Diese Spezifikation kann entweder vor der Implementierung einer Applikation schriftlich festgehalten werden, oder wie in agilen Prozessen üblich, während der Entwicklung schrittweise erweitert werden (z.B. Backlog Refinement). Die Qualität dieser Spezifikation hat zum einen direkten Einfluß auf die Entwicklungszeit eines Pull Requests und zum anderen auf die Anzahl der Iterationen, da eine unvollständige Spezifikation ein mehrfaches "durchfallen" beim Test zur folge haben kann.